iT邦幫忙

2021 iThome 鐵人賽

DAY 13
1
Modern Web

當拉拉肉遇到單元測試,是否能夠擦出命運的火花?系列 第 14

[Day 13] 簡單的單元測試實作(七)-建立共用的函式

  • 分享至 

  • xImage
  •  

昨天有提到,
其實我們通常不會把函式直接寫在web.php當中,
其實我們回傳的這個資料,
如果要透過網頁取得,
有點類似API的感覺

而通常像閏年判斷這種需求,
應該是會寫一個函式來處理,
所以我們今天就把閏年判斷寫成一個函式

而說到Laravel的函式,
可以參考一下 官方文件
中文版看起來很久沒有更新了,
或是也可以用Helpers關鍵字去搜尋英文版

Laravel有提供很多現成的函式給我們使用,
這些函式都放在這個目錄底下:vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
但是我們通常不會去改套件裡面的內容,
如果我們要自己寫函式的話,
我們最好是寫在自己的專案裡面,

如果要自己寫專案的話有兩種方式,
一種是直接修改 public/index.php
require __DIR__.'/../vendor/autoload.php';
之外再加入 require __DIR__.'/../app/helpers.php';
這樣我們就可以使用了,
但是這樣會有一個問題,
有些函式可能不是常常用到,
如果每一頁都載入一大堆函式可能會影響效能,
所以通常會建議用第二種方式

第二種方式是修改composer.json檔案,
在autoload裡面加入內容,
這樣子Laravel會幫我們判斷有沒有需要載入檔案

"autoload": {
    "files": [
        "app/Helpers/helpers.php"
    ],
}

然後我們在app資料夾底下建一個Helpers資料夾,
然後底下再建一個helpers.php檔案,
檔案內容如下

<?php
function GetLeapYear($year)
{
    if($year % 400 == 0)
        return true;
    if($year % 100 == 0)
        return false;
    if($year % 4 == 0)
        return true;
    return false;
}
?>

接下來要執行
composer dump-autoload
https://ithelp.ithome.com.tw/upload/images/20210915/20105694e1x8azMpOI.png

這樣子就可以做為全域函式,
在我們的程式當中被呼叫了。

參考資料:
在 Laravel 中新增全域函式 (helper)


上一篇
[Day 12] 簡單的單元測試實作(六)
下一篇
[Day 14] 簡單的單元測試實作(八)-修改成API來呼叫
系列文
當拉拉肉遇到單元測試,是否能夠擦出命運的火花?31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言